4-1 q庣B潀♁本?

早期的電腦作業系統(例如 UNIX 系統)都是以文字為介面,因此對於文字的處理與運算也就有一套特別精心規劃的方式,其中最為人所津津樂道的產出,就是通用運算式(Regular Expressions)的制訂和其廣泛的應用。通用運算式最早出現在 UNIX 的文字編輯程式,例如 ed、vi 等,但由於其功能強大、符號簡潔,也常被用在以 UNIX 為基礎的程式語言,例如 Perl 等。近年來在 Web 上使用的 JavaScript 以及 VBScript 也加入了通用運算式的功能,常被用來驗證或修改使用者在表單輸入的字串,其重要性可見一斑。

Hint
如果照字面來翻譯,Regular Expressions 應該是翻成「正規運算式」,但是這樣的翻譯,反而讓一般人無法從中文的字面來看出其意義,因此我們採取的中文名稱是「通用運算式」或簡稱「通用式」,強調此方法能由「簡單的符號來代表複雜的字串」的特性。

MATLAB 在第六版才開始支援通用運算式,這個新功能,將 MATLAB 由「數值計算」的領域推進到「字串計算」的領域,再加上原有的資料庫工具箱(Database Toolbox),因此可預見在短期的未來,MATLAB 將成為從事計算語言學(Computational Linguistics)或自然語言處理(Natural Language Processing,簡稱 NLP)的研究人員不可或缺的計算工具。

Hint
  • 在本章所學習到的通用運算式,幾乎可以原封不動的搬到其他程式語言來使用,例如 JavaScript、VBScript、Perl 等等。(如此一魚多吃,是不是太棒了!?)
  • MATLAB 6.x 的通用運算式並不支援中文,但在7.x 已經可以完全支援中文了!

事實上,一般電腦使用者平常就已經在使用通用運算式了,只是不自知而已。例如,在 DOS 視窗下,若要查詢副檔名為 txt 的檔案,只要在 DOS 視窗下輸入「dir *.txt 」即可,其中的「*」就是用來代表任意的字串(含空字串)。若要查詢主檔名是以 data 開始且其後接上兩個字元的 txt 檔案,我們只要在 DOS 視窗下輸入「dir data??.txt」即可,其中的「?」就是代表一個任意字元(但不包含空字元)。上述所用的星號和問號,就是通稱的「萬用符號」(Wild Cards,例如撲克牌中的鬼牌,在接龍時可以代表任意點數和花色),可以讓我們以簡單的符號來描述特定的某一類字串,這就是通用運算式的基本概念。

換句話說,通用運算式的終極目標就是「用簡單的符號來代表複雜的字串,以便進行特定字串的比對、代換及抽取」。欲達到此目的,通用運算式本身也是一列字串,包含了一般字元 (例如 a 到 z 的字元 ) 和「超字元」(Metacharacters,例如之前所提到的星號和問號)的特殊字元,整個通用運算式可以看成是一個字串樣版,可被用來比對特定的字串,以便進行此特定字串的代換或抽取。以下將逐步介紹通用運算式的相關程式設計和應用。


MATLAB程式設計:進階篇